package com.neu.smty.domain;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.neu.common.annotation.Excel;
import com.neu.common.core.domain.BaseEntity;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

/**
 * 排班管理对象 scheduling
 *
 * @author liningning
 * @date 2025-09-30
 */
@ApiModel("排班管理")
public class Scheduling extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 排班记录ID */
    @ApiModelProperty("排班记录ID")
    private Long schedulingId;

    /** 医生ID */
    @ApiModelProperty("医生ID")
    @Excel(name = "医生ID")
    private Long doctorId;

    // 新增医生关联字段（示例）
    /** 医生姓名 */
    @ApiModelProperty("医生姓名")
    @Excel(name = "医生姓名")
    private String doctorName;

    /** 医生科室 */
    @ApiModelProperty("医生科室")
    @Excel(name = "医生科室")
    private String doctorDept;

    /** 可检项目ID */
    @ApiModelProperty("可检项目ID")
    @Excel(name = "可检项目ID")
    private Long projectId;

    // 新增项目关联字段（示例）
    /** 项目名称 */
    @ApiModelProperty("项目名称")
    @Excel(name = "项目名称")
    private String projectName;

    /** 项目价格 */
    @ApiModelProperty("项目价格")
    @Excel(name = "项目价格")
    private BigDecimal projectPrice;

    /** 排班日期 */
    @ApiModelProperty(value="排班日期",example = "2021-09-10")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "排班日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date schedulingDate;

    /** 时间段 (0-上午, 1-下午) */
    @ApiModelProperty("时间段 (0-上午, 1-下午)")
    @Excel(name = "时间段 (0-上午, 1-下午)")
    private Integer timeSlot;

    /** 可预约人数 */
    @ApiModelProperty("可预约人数")
    @Excel(name = "可预约人数")
    private Long availableNumber;

    /** 已预约人数 */
    @ApiModelProperty("已预约人数")
    @Excel(name = "已预约人数")
    private Long reservedNumber;

    // 原有getter/setter方法保持不变
    public void setSchedulingId(Long schedulingId)
    {
        this.schedulingId = schedulingId;
    }

    public Long getSchedulingId()
    {
        return schedulingId;
    }

    // 医生ID相关方法（不变）
    public void setDoctorId(Long doctorId)
    {
        this.doctorId = doctorId;
    }

    public Long getDoctorId()
    {
        return doctorId;
    }

    // 新增医生关联字段的getter/setter
    public String getDoctorName() {
        return doctorName;
    }

    public void setDoctorName(String doctorName) {
        this.doctorName = doctorName;
    }

    public String getDoctorDept() {
        return doctorDept;
    }

    public void setDoctorDept(String doctorDept) {
        this.doctorDept = doctorDept;
    }

    // 项目ID相关方法（不变）
    public void setProjectId(Long projectId)
    {
        this.projectId = projectId;
    }

    public Long getProjectId()
    {
        return projectId;
    }

    // 新增项目关联字段的getter/setter
    public String getProjectName() {
        return projectName;
    }

    public void setProjectName(String projectName) {
        this.projectName = projectName;
    }

    public BigDecimal getProjectPrice() {
        return projectPrice;
    }

    public void setProjectPrice(BigDecimal projectPrice) {
        this.projectPrice = projectPrice;
    }

    // 以下为原有字段的getter/setter（保持不变）
    public void setSchedulingDate(Date schedulingDate)
    {
        this.schedulingDate = schedulingDate;
    }

    public Date getSchedulingDate()
    {
        return schedulingDate;
    }

    public void setTimeSlot(Integer timeSlot)
    {
        this.timeSlot = timeSlot;
    }

    public Integer getTimeSlot()
    {
        return timeSlot;
    }

    public void setAvailableNumber(Long availableNumber)
    {
        this.availableNumber = availableNumber;
    }

    public Long getAvailableNumber()
    {
        return availableNumber;
    }

    public void setReservedNumber(Long reservedNumber)
    {
        this.reservedNumber = reservedNumber;
    }

    public Long getReservedNumber()
    {
        return reservedNumber;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
                .append("schedulingId", getSchedulingId())
                .append("doctorId", getDoctorId())
                .append("doctorName", getDoctorName())  // 新增字段加入toString
                .append("doctorDept", getDoctorDept())
                .append("projectId", getProjectId())
                .append("projectName", getProjectName())  // 新增字段加入toString
                .append("projectPrice", getProjectPrice())
                .append("schedulingDate", getSchedulingDate())
                .append("timeSlot", getTimeSlot())
                .append("availableNumber", getAvailableNumber())
                .append("reservedNumber", getReservedNumber())
                .toString();
    }
}
